#ifndef __SWEI_ALARM_H
#define __SWEI_ALARM_H


#include "utils/utils_timer.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct{
    uint8_t status;
    utils_time_t timer;
}swei_alarm_t;


// 01 n 震动告警
// 02 n 断电告警
// 03 n 倾斜告警
// 04 n 翻滚告警
// 05 n 破坏告警
// 06 n 电子围栏告警
// 07 n 终端故障告警
// 08 n 车辆故障码
// 09 n 异动告警
typedef enum
{   
    ALARM_SHAKE = 0x01,         /*!< 震动报警 */   
    ALARM_TILT = 0x03,          /*!< 倾斜报警 */   
    ALARM_TUMBLING = 0x04,      /*!< 翻滚告警 */   
    ALARM_ABNORMAL_MOVE = 0x09, /*!< 异动告警 */   
    ALARM_MAX,              
}swei_alarm_id_e;

typedef struct{
    swei_alarm_id_e id;
    uint32_t ts;           
}swei_alarmtype_t;

void    swei_alarm_init(void);
void    swei_alarm_deinit(void);

void swei_alarm_id_clear(swei_alarm_id_e alarm_id);

bool swei_alarm_queue_is_empty(void) ;

int32_t swei_alarm_setup(swei_alarm_id_e alarm_id);

int32_t  swei_alarm_push(swei_alarmtype_t *node);
int32_t  swei_alarm_pop(swei_alarmtype_t *node);
int32_t  swei_alarm_peek(swei_alarmtype_t *node);

uint32_t swei_alarm_queue_size(void);
bool swei_alarm_queue_is_empty(void);
#ifdef __cplusplus
}
#endif

#endif
